package version1;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class HashSetDemo {

    public static void main(String[] args) {
        
        //test1();
        test2();
    }

    private static void test2() {
        Set<Student> set = new HashSet<>();
        set.add(new Student("lisi1",21));
        set.add(new Student("lisi2",22));
        set.add(new Student("lisi1",21));
        set.add(new Student("lisi2",22));
        set.add(new Student("lisi1",21));

        Iterator<Student> iterator = set.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }

    /**
     * 往Set集合中存储String类型时，可以保证集合内元素的唯一性
     * 
     * 
     * Set集合是哈希表结构，不同步的，保证元素唯一性的方式依赖于：hashCode()和equals()方法。
     * 之所以存储的字符串可以保证元素唯一性是因为，字符串String类本身就重写了Object类中的hashCode和equals方法。
     * 所以在往Set集合中存储String类型字符串时，可以保证集合内的元素的唯一性。
     */
    private static void test1() {
        Set<String> set = new HashSet<>();
        set.add("nba");
        set.add("java");
        set.add("haha");
        set.add("itcast");
        set.add("haha");
        set.add("java");
        set.add("java");
        set.add("java");
        set.add("itcast");

        for (String s : set) {
            System.out.println(s);
        }
    }
}
